This invention relates generally to computer networks and, more particularly, to routing updates associated with routing protocols used in a computer network.
A computer network is a geographically distributed collection of interconnected communication links for transporting data between nodes, such as computers. Many types of computer networks are available, with the types ranging from Local Area Networks (LANs) to Wide Area Networks (WANs). The nodes typically communicate by exchanging discrete frames or packets of data according to pre-defined protocols. In this context, a protocol consists of a set of rules defining how the nodes interact with each other.
Computer networks may be further interconnected by an intermediate node, called a router, to extend the effective xe2x80x9csizexe2x80x9d of each network. Since management of a large system of interconnected computer networks can prove burdensome, smaller groups of computer networks may be maintained as autonomous systems or routing domains. The networks within a routing domain are typically coupled together by conventional xe2x80x9cintradomainxe2x80x9d routers. Yet it still may be desirable to increase the number of nodes capable of exchanging data; in this case, xe2x80x9cinterdomainxe2x80x9d routers executing interdomain routing protocols are used to interconnect nodes of the various autonomous systems. An example of an interdomain routing protocol is the Border Gateway Protocol (BGP) which performs routing between autonomous systems by exchanging routing and reachability information among interdomain routers of the systems. The interdomain routers configured to execute the BGP protocol, called BGP routers, maintain routing tables, transmit routing update messages and render routing decisions based on routing metrics.
Specifically, each BGP router maintains a routing table that lists all feasible paths to a particular network. Periodic refreshing of the routing table is generally not performed; however, BGP peer routers residing in the autonomous systems exchange routing information under certain circumstances. For example, when a BGP router initially connects to the network, the peer routers exchange the entire contents of their routing tables. Thereafter when changes occur to those contents, the routers exchange only those portions of their routing tables that change in order to update their peers"" tables. These update messages, which are sent in response to routing table changes, advertise only an optimal path to a particular network. The optimal path is advertised as a single routing metric consisting of an arbitrary unit number that specifies a degree of preference for a particular link. The BGP routing protocol is well-known and described in detail in Re-quest For Comments (RFC) 1771, by Y. Rekhter and T. Li (1995), and Interconnections, Bridges and Routers, by R. Perlman, published by Addison Wesley Publishing Company, at pages 323-329 (1992), all disclosures of which are hereby incorporated by reference.
Broadly stated, a BGP router generates routing update messages for an adjacency or neighbor peer router by xe2x80x9cwalking-throughxe2x80x9d the routing table and applying appropriate routing policies. A routing policy is information that enables a BGP router to rank routes according to filtering and preference (i.e., the xe2x80x9coptimal routexe2x80x9d). Routing updates provided by the update message allows BGP routers of the autonomous systems to construct a consistent view of the network topology. The update messages are typically sent using a reliable transport, such as the Transmission Control Protocol (TCP), to ensure reliable delivery. TCP is a transport protocol implemented by a transport layer of the Internet Protocol (IP) architecture; the term TCP/IP is commonly used to denote this architecture. The TCP/IP architecture is well-known and described in Computer Networks, 3rd Edition, by Andrew S. Tanenbaum, published by Prentice-Hall (1996).
When more than one neighbor share similar routing policies and these neighbors share a common subnetwork, xe2x80x9cidenticalxe2x80x9d update messages may be sent by a BGP router to these neighboring peers of the autonomous systems. In this context, a common sub-network (subnet) is defined as a shared medium, such as a LAN, that allows the updating router to access its neighboring peer routers through a single network interface. When the neighbors share a common subnet, a grouped-based routing arrangement may be further employed that optimizes generation of the identical routing update messages. That is, the BGP router may generate an update message for one neighbor and then replicate that message for all other neighbors in accordance with a conventional replication process.
Specifically, the router generates the actual data contained in the update message and stores that data in a memory location of the router. The router then generates a header for each neighbor receiving the update; the header includes a pointer referencing the address of the message data location in memory. The router then processes each header to construct a message for each neighbor and transmits the messages such that each neighbor receives an identical copy of the actual message data. In a large network, the technique of grouping neighboring peer routers according to common subnets substantially reduces memory and processor utilization, thereby increasing the rate of (i.e., speeding-up) routing updates.
However, an inconsistent routing situation arises if the grouped-based routing arrangement is employed with a set of neighboring peer routers that do not share a common subnet. In other words, if multiple external BGP neighbors span multiple networks, the neighbors cannot be grouped by a common subnet because a next-hop attribute of the routing update message is different for each of these neighbors. The update routing message is thus not xe2x80x9cidenticalxe2x80x9d for each neighbor even if these neighbors share identical routing policies, and use of the conventional grouping arrangement results in incorrect (or misformatted) update messages being sent to the BGP peer receivers.
Accordingly, the routing update message must be generated separately for each neighboring peer router that does not share the common subnet. Separate generation of update messages causes substantial processor and memory resource consumption at the updating router which, in turn, limits router update performance. The present invention is directed to solving this problem and, in particular, to providing a technique for efficiently generating update messages for neighboring peer routers that do not share a common subnet.
The invention comprises an improved group-based routing update technique that allows limited per neighbor customization of routing update messages generated by an interdomain router for its neighboring peer routers within autonomous systems of a computer network. The inventive technique may be employed when the neighboring peer routers share identical routing policies, but the routing update messages differ only in certain attributes with known locations and lengths. Broadly stated, appropriate values of the location and length attributes for each neighboring router are calculated and stored during a novel replication stage of the inventive technique. Before each message is transmitted, the proper location and length attributes of the message are updated with the stored values for the respective neighbor.
In accordance with the inventive technique, the interdomain router generates a routing update message comprising a message data portion and further generates a plurality of headers, each associated with a neighboring peer router. Each header contains a plurality of pointers, one of which references the beginning of the message data portion stored in a memory of the interdomain router (the message pointer) and another of which references a location (the referenced field) within the message data portion that requires customization for each neighbor (the field pointer). The header further contains an actual value to be loaded into the referenced field for each neighbor router.
Operationally, the interdomain router initially generates a routing update message (including the message data portion) for a first neighbor. The router also generates a first header that contains the message pointer and the field pointer, along with a first value to be loaded into the referenced field of the message data portion for the first neighbor. The update message is then replicated for a second neighbor by creating a second header containing the message pointer and the field pointer; this time, however, the second header contains a second value to be loaded into the referenced field for the second neighbor. The replication process is repeated for each neighboring peer router receiving the routing update message. Immediately before transmitting the routing message to each neighbor, the content of the referenced field in the message data portion is replaced by the value contained in the header for each neighboring peer router. Thereafter, the message is transmitted to each neighbor.
Thus, instead of generating different copies of the routing update message for each neighboring peer router, a single data portion of the update message is created and only a specific field of that message is customized for each neighbor prior to transmitting the message to that neighbor. Advantageously, the inventive technique substantially conserves memory and processor resources when generating and transmitting routing update messages in a large network.